لقد شدني هذا الموضوع من الاستفسار او السؤال الذي طرحته الاخت/ المبدعه الصغيره ومن رأي انه موضوع  مهم . و حتى لا يتم التداخل بين أنواع او طرق الترتيب " تـــصاعدياً او تنازليا " .

 

هناك ثلاثة أنواع من طرق الترتيب وهذا على حد علمي .

 

الترتيب بطريقة الفقاقيع        Bubble Sort

الترتيب بطريقة الاختيار      Selection Sort

الترتيب بطريقة الادخال      Insertion Sort

 

فأود ان اوضح الفرق لكم حتى لا يتم التداخل بينهم  التداخل لو تسمحو لي .

 

اولاُ : الترتيب بطريقة الفقاقيع        Bubble Sort

 

في هذه الطريقة تتم مقارنة كل قيمتين متتاليتين من بداية القائمة "المصفوفة" او "Array" وتبديلهم اذا لم يكونو في التبديل المطلوب " تصاعديا مثلا " وذلك حتى نهاية القائمة .

باستكمال هذه المرحلة تكون اكبر قيمة استقرة قد استقرت في نهاية القائمة .

ويتم استبعاد القيمة الاخيرة لانها استقرت في مكانها الصحيح .

يتم تكــــرار هذه المرحلة " 1 الى الـ N  " حيث ان الـ N   هي عدد القيم في القائمة حتى يتم الترتيب تصاعديا مثلا .

 

ثانيا : الترتيب بطريقة الاختيار   Selection Sort

 

في هذه الطريقه يتم البحث عن القيمة الصغرى بين قيم القائمة ويتم استبدالها مع القيمة الاولى في القائمة .

ويتم استبعاد القيمة الاولى لانها استقرت في مكانه الصحيح ويكرر ذلك الى القيمه الثانية الى الاخيرة الخ حتى يصل الى نهاية القائمة .

 

ثالثا : الترتيب بطريقة الادخال    Insertion Sort

 

هذه الطريق تقوم فكرتها على اساس عدد القيم في المصفوفة او القائمة فإذا كانت عدد القيم اكبر من واحد وهذا شرت اساسي الي عملية مقارنة يتم عملية المقارنه بداية من الرقم الثاني بالسابق له ويتم استبدالهم اذا لم يكن في الترتيب الصحيح وتكرر هذه العملية  بعدد قيم المصفوفة حتى الوصول الى الترتيب الصحيح .

 

---------------------------------------------------------------------------------------------------------

الاكواد :

 

اولاُ : الترتيب بطريقة الفقاقيع        Bubble Sort

Private Sub Command1_Click ()

 

Dim N, I, J, Temp As Integer

Dim X (1 To 8) As Integer

Dim NOSWAP As Boolean

 

N = InputBox ("أدخل عدد الأرقام")

 

For J = 1 To N

X (J) = InputBox ("ادخل الأرقام")

Next J

 

For I = 1 To N - 1

NOSWAP = True

 

For J = 1 To N - I

If X(J) > X(J + 1) Then

Temp = X(J)

X(J) = X(J + 1)

X(J + 1) = Temp

NOSWAP = False

End If

Next J

 

If NOSWAP = True Then

MsgBox ("تم انهاء الترتيب")

Exit For

End If

Next I

 

For J = 1 To N

Print, X(J);

Next J

 

End Sub

ثانيا : الترتيب بطريقة الاختيار   Selection Sort

 

Private Sub Command1_Click ()

 

Cls

 

Dim x(1 To 20) As Single

Dim n, J, k, temp, I As Single

 

n = InputBox("إدخل عدد الارقام")

 

For J = 1 To n

x(J) = InputBox("إدخل القيمة")

Next J

 

For J = 1 To n - 1

k = J

temp = x(J)

 

For I = J + 1 To n

If x(I) < temp Then

k = (I)

End If

Next I

 

temp = x(J)

x(J) = x(k)

x(k) = temp

Next J

 

For I = 1 To n

Print , x(I);

Next I

 

End Sub

ثالثا : الترتيب بطريقة الادخال    Insertion Sort

 

Private Sub Command1_Click ()

 

Cls

 

Dim j, k, n, i As Integer

Dim a(1 To 8) As Integer

 

n = InputBox("إدخل عدد الارقام ")

 

For k = 1 To n

a(k) = InputBox("إدخل القيمة ")

Next k

 

If n >= 2 Then

For i = 2 To n

Flag = 1

j = i

Do While (j >= 2) And (flage = 1)

If a(j) < a(j - 1) Then

temp = a(j)

a(j) = a(j - 1)

a(j - 1) = temp

j = j - 1

Else

Flag = 0

End If

Loop

Next i

 

For k = 1 To n

Print a(k), k, m, x, t

Next k

 

End If

End Sub

 

ويارب يـــكون الشرح وافي ومفهوم واي استفسار انا تحت امركم .

 

اخوكم احمد عزت "A7med_prof"